import "./type-created";
import "./type-array";
import "./type-calc";
import "./type-map";
import "./type-name";
import { GaRegExp, ruleInject, ruleInjectable } from "../InjectionRule";

@ruleInjectable()
export default class typeDataRule extends GaRegExp {

	@ruleInject() private numberRule!: GaRegExp;

	@ruleInject() private stringRule!: GaRegExp;

	@ruleInject() private booleanRule!: GaRegExp;

	@ruleInject() private typeNameRule!: GaRegExp;

	@ruleInject() private typeMapRule!: GaRegExp;

	@ruleInject() private typeArrayRule!: GaRegExp;

	public RuleInit() {
		this.ParseRule([
			"(",
			this.numberRule, "|",
			this.stringRule, "|",
			this.booleanRule, "|",
			this.typeNameRule, "|",
			this.typeMapRule, "|",
			this.typeArrayRule,
			")",
		]);
	}

}
